<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: ml/include/pcl/ml/multi_channel_2d_comparison_feature_handler.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('multi__channel__2d__comparison__feature__handler_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">multi_channel_2d_comparison_feature_handler.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Software License Agreement (BSD License)</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> *  Point Cloud Library (PCL) - www.pointclouds.org</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *  Copyright (c) 2010-2011, Willow Garage, Inc.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *  All rights reserved.</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *  Redistribution and use in source and binary forms, with or without</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *  modification, are permitted provided that the following conditions</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *  are met:</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *   * Redistributions of source code must retain the above copyright</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *     notice, this list of conditions and the following disclaimer.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *   * Redistributions in binary form must reproduce the above</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *     copyright notice, this list of conditions and the following</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *     disclaimer in the documentation and/or other materials provided</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *     with the distribution.</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *   * Neither the name of Willow Garage, Inc. nor the names of its</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *     contributors may be used to endorse or promote products derived</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *     from this software without specific prior written permission.</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *  &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE</span></div>
<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,</span></div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,</span></div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span></div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span></div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> *  POSSIBILITY OF SUCH DAMAGE.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;  </div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#ifndef PCL_ML_MULTI_CHANNEL_2D_COMPARISON_FEATURE_HANDLER_H_</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#define PCL_ML_MULTI_CHANNEL_2D_COMPARISON_FEATURE_HANDLER_H_</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="common_2include_2pcl_2common_2common_8h.html">pcl/common/common.h</a>&gt;</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;pcl/ml/feature_handler.h&gt;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;pcl/ml/multi_channel_2d_data_set.h&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &lt;pcl/ml/multi_channel_2d_comparison_feature.h&gt;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &lt;pcl/ml/multiple_data_2d_example_index.h&gt;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;pcl/ml/point_xy_32i.h&gt;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;pcl/ml/point_xy_32f.h&gt;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160; </div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;istream&gt;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;ostream&gt;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">namespace </span>pcl</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;{</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> DATA_TYPE, <span class="keywordtype">size_t</span> NUM_OF_CHANNELS&gt;</div>
<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html">   58</a></span>&#160;  <span class="keyword">class </span>PCL_EXPORTS <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html">MultiChannel2DComparisonFeatureHandler</a></div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    : <span class="keyword">public</span> <a class="code" href="classpcl_1_1_feature_handler.html">pcl::FeatureHandler</a>&lt;pcl::MultiChannel2DComparisonFeature&lt;pcl::PointXY32i&gt;, pcl::MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;, pcl::MultipleData2DExampleIndex&gt;</div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;  {</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;  </div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a9d798a9622d3032e2dbd7a6ec1954acf">   65</a></span>&#160;    <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a9d798a9622d3032e2dbd7a6ec1954acf">MultiChannel2DComparisonFeatureHandler</a> (</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> feature_window_width,</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> feature_window_height)</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;      : feature_window_width_ (feature_window_width), feature_window_height_ (feature_window_height)</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    {}</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a0bb1ea1f52b905e04793f6912e1795f9">   71</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a0bb1ea1f52b905e04793f6912e1795f9">~MultiChannel2DComparisonFeatureHandler</a> () {}</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a77c73a2dedafb1304b0e501d75bc2738">   78</a></span>&#160;    <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a77c73a2dedafb1304b0e501d75bc2738">setFeatureWindowSize</a> (</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;      <span class="keywordtype">int</span> width,</div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;      <span class="keywordtype">int</span> height)</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    { </div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;      feature_window_width_ = width; </div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;      feature_window_height_ = height; </div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    }</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160; </div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#adb35b339a775ceac5d1e47ab309d4dd4">   91</a></span>&#160;    <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#adb35b339a775ceac5d1e47ab309d4dd4">createRandomFeatures</a> (</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_of_features, </div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      std::vector&lt;<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32i&gt;</a> &gt; &amp; features)</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    {</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      features.resize (num_of_features);</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> feature_index = 0; feature_index &lt; num_of_features; ++feature_index)</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      {</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        features[feature_index].p1 = <a class="code" href="classpcl_1_1_point_x_y32i.html#a9414cf0e2c0c17859ce1ac55091bfc99">PointXY32i::randomPoint</a>(-feature_window_width_/2, feature_window_width_/2, -feature_window_height_/2, feature_window_height_/2);</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        features[feature_index].p2 = <a class="code" href="classpcl_1_1_point_x_y32i.html#a9414cf0e2c0c17859ce1ac55091bfc99">PointXY32i::randomPoint</a>(-feature_window_width_/2, feature_window_width_/2, -feature_window_height_/2, feature_window_height_/2);</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        features[feature_index].channel = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(NUM_OF_CHANNELS*(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(rand()) / (RAND_MAX+1)));</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      }</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    }</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a2acf4c17b0cd02942d5bbed2637d0e56">  112</a></span>&#160;    <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a2acf4c17b0cd02942d5bbed2637d0e56">evaluateFeature</a> (</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;      <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32i&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      <a class="code" href="classpcl_1_1_multi_channel2_d_data_set.html">MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;</a> &amp; data_set,</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      std::vector&lt;MultipleData2DExampleIndex&gt; &amp; examples,</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      std::vector&lt;float&gt; &amp; results,</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;      std::vector&lt;unsigned char&gt; &amp; flags)<span class="keyword"> const</span></div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="keyword">    </span>{</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      results.resize (examples.size ());</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;      flags.resize (examples.size ());</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> example_index = 0; example_index &lt; examples.size (); ++example_index)</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;      {</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keyword">const</span> <a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html">MultipleData2DExampleIndex</a> &amp; example = examples[example_index];</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160; </div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        evaluateFeature (feature, data_set, example, results[example_index], flags[example_index]);</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;      }</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    }</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160; </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a9b8967a3de520d2d5d556f63317d54fb">  137</a></span>&#160;    <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a9b8967a3de520d2d5d556f63317d54fb">evaluateFeature</a> (</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;      <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32i&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;      <a class="code" href="classpcl_1_1_multi_channel2_d_data_set.html">MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;</a> &amp; data_set,</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;      <span class="keyword">const</span> <a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html">MultipleData2DExampleIndex</a> &amp; example,</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;      <span class="keywordtype">float</span> &amp; result,</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;      <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &amp; flag)<span class="keyword"> const</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keyword">    </span>{</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> center_col_index = example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#a8be184b8a7efe97df3463be820320379">x</a>;</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> center_row_index = example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#a3db3df39303e0a41c6a7be43f514e088">y</a>;</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160; </div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p1_col = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#acc68504329e15094bd0d99313a5c570b">p1</a>.x + center_col_index);</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p1_row = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#acc68504329e15094bd0d99313a5c570b">p1</a>.y + center_row_index);</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p2_col = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a36c7c3b56cc8e76d8c7419991ac0429f">p2</a>.x + center_col_index);</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p2_row = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a36c7c3b56cc8e76d8c7419991ac0429f">p2</a>.y + center_row_index);</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160; </div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> channel = feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a00233aaf19077ef1856ada02938d0dc5">channel</a>;</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">float</span> value1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (data_set (example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">data_set_id</a>, p1_col, p1_row)[channel]);</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">float</span> value2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (data_set (example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">data_set_id</a>, p2_col, p2_row)[channel]);</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;      result = value1 - value2;</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;      flag = (pcl_isfinite (value1) &amp;&amp; pcl_isfinite (value2)) ? 0 : 1;</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    }</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160; </div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ae5222ac47e3212e94df2153d8a763803">  167</a></span>&#160;    <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ae5222ac47e3212e94df2153d8a763803">generateCodeForEvaluation</a> (</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;      <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32i&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;      std::ostream &amp; stream)<span class="keyword"> const</span></div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keyword">    </span>{</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;ERROR: RegressionVarianceStatsEstimator does not implement generateCodeForBranchIndex(...)&quot;</span>;</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;      <span class="comment">//stream &lt;&lt; &quot;const float value = ( (*dataSet)(dataSetId, centerY+&quot; &lt;&lt; feature.p1.y &lt;&lt; &quot;, centerX+&quot; &lt;&lt; feature.p1.x &lt;&lt; &quot;)[&quot; &lt;&lt; static_cast&lt;int&gt;(feature.colorChannel) &lt;&lt; &quot;]&quot;</span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;      <span class="comment">//  &lt;&lt; &quot; - &quot; &lt;&lt; &quot;(*dataSet)(dataSetId, centerY+&quot; &lt;&lt; feature.p2.y &lt;&lt; &quot;, centerX+&quot; &lt;&lt; feature.p2.x &lt;&lt; &quot;)[&quot; &lt;&lt; static_cast&lt;int&gt;(feature.colorChannel) &lt;&lt; &quot;] );&quot; &lt;&lt; ::std::endl;</span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    }</div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160; </div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;  <span class="keyword">private</span>:</div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ac1fd9fac486bfb9bfb8be106ab423d1b">  178</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ac1fd9fac486bfb9bfb8be106ab423d1b">feature_window_width_</a>;</div>
<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ae33e81f567c54e16637f71838a96faf8">  180</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ae33e81f567c54e16637f71838a96faf8">feature_window_height_</a>;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160; </div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  };</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160; </div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> DATA_TYPE, <span class="keywordtype">size_t</span> NUM_OF_CHANNELS, <span class="keywordtype">size_t</span> SCALE_CHANNEL, <span class="keywordtype">bool</span> INVERT_SCALE&gt;</div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html">  187</a></span>&#160;  <span class="keyword">class </span>PCL_EXPORTS <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html">ScaledMultiChannel2DComparisonFeatureHandler</a></div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    : <span class="keyword">public</span> <a class="code" href="classpcl_1_1_feature_handler.html">pcl::FeatureHandler</a>&lt;pcl::MultiChannel2DComparisonFeature&lt;pcl::PointXY32f&gt;, pcl::MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;, pcl::MultipleData2DExampleIndex&gt;</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;  {</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  </div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ad880c3b3512f7657433363b3859812fd">  194</a></span>&#160;    <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ad880c3b3512f7657433363b3859812fd">ScaledMultiChannel2DComparisonFeatureHandler</a> (</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> feature_window_width,</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> feature_window_height)</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;      : feature_window_width_ (feature_window_width), feature_window_height_ (feature_window_height)</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;    {}</div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ac511a3614a576d5010e04565f985cb01">  200</a></span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ac511a3614a576d5010e04565f985cb01">~ScaledMultiChannel2DComparisonFeatureHandler</a> () {}</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ad3b067f32dfcecafd33f98578682f2ce">  207</a></span>&#160;    <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ad3b067f32dfcecafd33f98578682f2ce">setFeatureWindowSize</a> (</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;      <span class="keywordtype">int</span> width,</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;      <span class="keywordtype">int</span> height)</div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    { </div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;      feature_window_width_ = width; </div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;      feature_window_height_ = height; </div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    }</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a04f5af75f4ff54e0d19a6140d39ac2b4">  220</a></span>&#160;    <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a04f5af75f4ff54e0d19a6140d39ac2b4">createRandomFeatures</a> (</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> num_of_features, </div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;      std::vector&lt;<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32f&gt;</a> &gt; &amp; features)</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    {</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;      features.resize (num_of_features);</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> feature_index = 0; feature_index &lt; num_of_features; ++feature_index)</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;      {</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        features[feature_index].p1 = <a class="code" href="classpcl_1_1_point_x_y32f.html#a95da5d4b009d737fc3b07ecd05b5d6a8">PointXY32f::randomPoint</a>(-feature_window_width_/2, feature_window_width_/2, -feature_window_height_/2, feature_window_height_/2);</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        features[feature_index].p2 = <a class="code" href="classpcl_1_1_point_x_y32f.html#a95da5d4b009d737fc3b07ecd05b5d6a8">PointXY32f::randomPoint</a>(-feature_window_width_/2, feature_window_width_/2, -feature_window_height_/2, feature_window_height_/2);</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;        features[feature_index].channel = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(NUM_OF_CHANNELS*(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(rand()) / (RAND_MAX+1)));</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;      }</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    }</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160; </div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a0a5961d9d1a06de376b80dc07a53ca99">  241</a></span>&#160;    <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a0a5961d9d1a06de376b80dc07a53ca99">evaluateFeature</a> (</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32f&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;      <a class="code" href="classpcl_1_1_multi_channel2_d_data_set.html">MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;</a> &amp; data_set,</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      std::vector&lt;MultipleData2DExampleIndex&gt; &amp; examples,</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;      std::vector&lt;float&gt; &amp; results,</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      std::vector&lt;unsigned char&gt; &amp; flags)<span class="keyword"> const</span></div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="keyword">    </span>{</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;      results.resize (examples.size ());</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;      flags.resize (examples.size ());</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">int</span> example_index = 0; example_index &lt; examples.size (); ++example_index)</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;      {</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <span class="keyword">const</span> <a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html">MultipleData2DExampleIndex</a> &amp; example = examples[example_index];</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160; </div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;        evaluateFeature (feature, data_set, example, results[example_index], flags[example_index]);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      }</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    }</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160; </div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a42876790466c7ed3f9c61f6a3897df18">  266</a></span>&#160;    <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a42876790466c7ed3f9c61f6a3897df18">evaluateFeature</a> (</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;      <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32f&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      <a class="code" href="classpcl_1_1_multi_channel2_d_data_set.html">MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;</a> &amp; data_set,</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      <span class="keyword">const</span> <a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html">MultipleData2DExampleIndex</a> &amp; example,</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;      <span class="keywordtype">float</span> &amp; result,</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> &amp; flag)<span class="keyword"> const</span></div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="keyword">    </span>{</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> center_col_index = example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#a8be184b8a7efe97df3463be820320379">x</a>;</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">int</span> center_row_index = example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#a3db3df39303e0a41c6a7be43f514e088">y</a>;</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160; </div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      <span class="keywordtype">float</span> scale;</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;      <span class="keywordflow">if</span> (INVERT_SCALE)</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        scale = 1.0f / <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (data_set (example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">data_set_id</a>, center_col_index, center_row_index)[SCALE_CHANNEL]);</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        scale = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (data_set (example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">data_set_id</a>, center_col_index, center_row_index)[SCALE_CHANNEL]);</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160; </div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160; </div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160; </div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p1_col = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (scale * feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#acc68504329e15094bd0d99313a5c570b">p1</a>.x + center_col_index);</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p1_row = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (scale * feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#acc68504329e15094bd0d99313a5c570b">p1</a>.y + center_row_index);</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p2_col = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (scale * feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a36c7c3b56cc8e76d8c7419991ac0429f">p2</a>.x + center_col_index);</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">size_t</span> p2_row = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span> (scale * feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a36c7c3b56cc8e76d8c7419991ac0429f">p2</a>.y + center_row_index);</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160; </div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> channel = feature.<a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a00233aaf19077ef1856ada02938d0dc5">channel</a>;</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160; </div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">float</span> value1 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (data_set (example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">data_set_id</a>, p1_col, p1_row)[channel]);</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;      <span class="keyword">const</span> <span class="keywordtype">float</span> value2 = <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span> (data_set (example.<a class="code" href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">data_set_id</a>, p2_col, p2_row)[channel]);</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160; </div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      result = value1 - value2;</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;      flag = (pcl_isfinite (value1) &amp;&amp; pcl_isfinite (value2)) ? 0 : 1;</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;    }</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;    <span class="keywordtype">void</span> </div>
<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a476466bacddb020d16af9695eda038cd">  305</a></span>&#160;    <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a476466bacddb020d16af9695eda038cd">generateCodeForEvaluation</a> (</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;      <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32f&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;      std::ostream &amp; stream)<span class="keyword"> const</span></div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="keyword">    </span>{</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;ERROR: ScaledMultiChannel2DComparisonFeatureHandler does not implement generateCodeForBranchIndex(...)&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160; </div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;      <span class="comment">//pcl::PointXY32f p1 = feature.p1;</span></div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;      <span class="comment">//pcl::PointXY32f p2 = feature.p2;</span></div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160; </div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;      <span class="comment">//stream &lt;&lt; &quot;const float eval_value = data_ptr + &quot; &lt;&lt; p1.x &lt;&lt; &quot; + &quot; &lt;&lt; p1.y &lt;&lt; &quot; * width;</span></div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160; </div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      <span class="comment">//stream &lt;&lt; &quot;const float value = ( (*dataSet)(dataSetId, centerY+&quot; &lt;&lt; feature.p1.y &lt;&lt; &quot;, centerX+&quot; &lt;&lt; feature.p1.x &lt;&lt; &quot;)[&quot; &lt;&lt; static_cast&lt;int&gt;(feature.colorChannel) &lt;&lt; &quot;]&quot;</span></div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;      <span class="comment">//  &lt;&lt; &quot; - &quot; &lt;&lt; &quot;(*dataSet)(dataSetId, centerY+&quot; &lt;&lt; feature.p2.y &lt;&lt; &quot;, centerX+&quot; &lt;&lt; feature.p2.x &lt;&lt; &quot;)[&quot; &lt;&lt; static_cast&lt;int&gt;(feature.colorChannel) &lt;&lt; &quot;] );&quot; &lt;&lt; ::std::endl;</span></div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;    }</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160; </div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;  <span class="keyword">private</span>:</div>
<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ac0e0f1c30888b5679d156c1807f3cb78">  322</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ac0e0f1c30888b5679d156c1807f3cb78">feature_window_width_</a>;</div>
<div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a33e9e59b4dc62f8ae38e23da8cfe3f0c">  324</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a33e9e59b4dc62f8ae38e23da8cfe3f0c">feature_window_height_</a>;</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;  };</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160; </div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> DATA_TYPE, <span class="keywordtype">size_t</span> NUM_OF_CHANNELS, <span class="keywordtype">size_t</span> SCALE_CHANNEL, <span class="keywordtype">bool</span> INVERT_SCALE&gt;</div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator.html">  330</a></span>&#160;  <span class="keyword">class </span>PCL_EXPORTS <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator.html">ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator</a></div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;    : <span class="keyword">public</span> pcl::FeatureHandlerCodeGenerator&lt;pcl::MultiChannel2DComparisonFeature&lt;pcl::PointXY32f&gt;, pcl::MultiChannel2DDataSet&lt;DATA_TYPE, NUM_OF_CHANNELS&gt;, pcl::MultipleData2DExampleIndex&gt;</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  {</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="keyword">public</span>:</div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;      <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator.html">ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator</a> () {}</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;      <span class="keyword">virtual</span> ~<a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator.html">ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator</a> () {}</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160; </div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;      generateEvalFunctionCode (</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        std::ostream &amp; stream) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;      <span class="keywordtype">void</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;      generateEvalCode (</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <span class="keyword">const</span> <a class="code" href="classpcl_1_1_multi_channel2_d_comparison_feature.html">MultiChannel2DComparisonFeature&lt;PointXY32f&gt;</a> &amp; feature,</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;        std::ostream &amp; stream) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;  };</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160; </div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> DATA_TYPE, <span class="keywordtype">size_t</span> NUM_OF_CHANNELS, <span class="keywordtype">size_t</span> SCALE_CHANNEL, <span class="keywordtype">bool</span> INVERT_SCALE&gt;</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;  <span class="keywordtype">void</span></div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;  <a class="code" href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator.html">ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator&lt;DATA_TYPE, NUM_OF_CHANNELS, SCALE_CHANNEL, INVERT_SCALE&gt;::generateEvalFunctionCode</a> (</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    std::ostream &amp; stream)<span class="keyword"> const</span></div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<span class="keyword">  </span>{</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="keywordflow">if</span> (NUM_OF_CHANNELS == 1 &amp;&amp; SCALE_CHANNEL == 0 &amp;&amp; INVERT_SCALE)</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    {</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;const float scale  = 1.0f / static_cast&lt;float&gt; (*data_ptr);&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;struct LocalFeatureHandler&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;{&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;  static inline void eval (&quot;</span> &lt;&lt; <span class="keyword">typeid</span> (DATA_TYPE).name () &lt;&lt; <span class="stringliteral">&quot; * a_ptr, const float a_x1, const float a_y1, const float a_x2, const float a_y2, const float a_scale, const int a_width, float &amp; a_result, unsigned char &amp; a_flags)&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;  {&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;    a_result = *(a_ptr + static_cast&lt;int&gt; (a_scale*a_x1) + (static_cast&lt;int&gt; (a_scale*a_y1)*a_width)) - *(a_ptr + static_cast&lt;int&gt; (a_scale*a_x2) + (static_cast&lt;int&gt; (a_scale*a_y2)*a_width));&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;  }&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;};&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    }</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    {</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      stream &lt;&lt; <span class="stringliteral">&quot;ERROR: generateEvalFunctionCode not implemented&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    }</div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  }</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160; </div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  <span class="keyword">template</span> &lt;<span class="keyword">class</span> DATA_TYPE, <span class="keywordtype">size_t</span> NUM_OF_CHANNELS, <span class="keywordtype">size_t</span> SCALE_CHANNEL, <span class="keywordtype">bool</span> INVERT_SCALE&gt;</div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="keywordtype">void</span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator&lt;DATA_TYPE, NUM_OF_CHANNELS, SCALE_CHANNEL, INVERT_SCALE&gt;::generateEvalCode (</div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    <span class="keyword">const</span> MultiChannel2DComparisonFeature&lt;PointXY32f&gt; &amp; feature,</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;    std::ostream &amp; stream)<span class="keyword"> const</span></div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keyword">  </span>{</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    stream &lt;&lt; <span class="stringliteral">&quot;LocalFeatureHandler::eval (data_ptr, &quot;</span> </div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;      &lt;&lt; feature.p1.x &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> </div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;      &lt;&lt; feature.p1.y &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;      &lt;&lt; feature.p2.x &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;      &lt;&lt; feature.p2.y &lt;&lt; <span class="stringliteral">&quot;, &quot;</span></div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;      &lt;&lt; <span class="stringliteral">&quot;scale, width, result, flags);&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;  }</div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160; </div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160; </div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;  <span class="keyword">typedef</span> MultiChannel2DComparisonFeatureHandler&lt;float, 1&gt; Depth2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;  <span class="keyword">typedef</span> MultiChannel2DComparisonFeatureHandler&lt;float, 2&gt; IntensityDepth2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;  <span class="keyword">typedef</span> MultiChannel2DComparisonFeatureHandler&lt;float, 3&gt; RGB2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;  <span class="keyword">typedef</span> MultiChannel2DComparisonFeatureHandler&lt;float, 4&gt; RGBD2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;  <span class="keyword">typedef</span> ScaledMultiChannel2DComparisonFeatureHandler&lt;float, 1, 0, true&gt; ScaledDepth2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;  <span class="keyword">typedef</span> ScaledMultiChannel2DComparisonFeatureHandler&lt;float, 2, 1, true&gt; ScaledIntensityDepth2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;  <span class="keyword">typedef</span> ScaledMultiChannel2DComparisonFeatureHandler&lt;float, 4, 3, true&gt; ScaledRGBD2DComparisonFeatureHandler;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160; </div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;  <span class="keyword">typedef</span> ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator&lt;float, 1, 0, true&gt; ScaledDepth2DComparisonFeatureHandlerCCodeGenerator;</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160; </div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;}</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160; </div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="aclasspcl_1_1_feature_handler_html"><div class="ttname"><a href="classpcl_1_1_feature_handler.html">pcl::FeatureHandler</a></div><div class="ttdoc">Utility class interface which is used for creating and evaluating features.</div><div class="ttdef"><b>Definition:</b> feature_handler.h:55</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html">pcl::MultiChannel2DComparisonFeatureHandler</a></div><div class="ttdoc">Feature utility class that handles the creation and evaluation of RGBD comparison features.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:60</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_a0bb1ea1f52b905e04793f6912e1795f9"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a0bb1ea1f52b905e04793f6912e1795f9">pcl::MultiChannel2DComparisonFeatureHandler::~MultiChannel2DComparisonFeatureHandler</a></div><div class="ttdeci">virtual ~MultiChannel2DComparisonFeatureHandler()</div><div class="ttdoc">Destructor.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:71</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_a2acf4c17b0cd02942d5bbed2637d0e56"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a2acf4c17b0cd02942d5bbed2637d0e56">pcl::MultiChannel2DComparisonFeatureHandler::evaluateFeature</a></div><div class="ttdeci">void evaluateFeature(const MultiChannel2DComparisonFeature&lt; PointXY32i &gt; &amp;feature, MultiChannel2DDataSet&lt; DATA_TYPE, NUM_OF_CHANNELS &gt; &amp;data_set, std::vector&lt; MultipleData2DExampleIndex &gt; &amp;examples, std::vector&lt; float &gt; &amp;results, std::vector&lt; unsigned char &gt; &amp;flags) const</div><div class="ttdoc">Evaluates a feature for a set of examples on the specified data set.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:112</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_a77c73a2dedafb1304b0e501d75bc2738"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a77c73a2dedafb1304b0e501d75bc2738">pcl::MultiChannel2DComparisonFeatureHandler::setFeatureWindowSize</a></div><div class="ttdeci">void setFeatureWindowSize(int width, int height)</div><div class="ttdoc">Sets the feature window size.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:78</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_a9b8967a3de520d2d5d556f63317d54fb"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a9b8967a3de520d2d5d556f63317d54fb">pcl::MultiChannel2DComparisonFeatureHandler::evaluateFeature</a></div><div class="ttdeci">void evaluateFeature(const MultiChannel2DComparisonFeature&lt; PointXY32i &gt; &amp;feature, MultiChannel2DDataSet&lt; DATA_TYPE, NUM_OF_CHANNELS &gt; &amp;data_set, const MultipleData2DExampleIndex &amp;example, float &amp;result, unsigned char &amp;flag) const</div><div class="ttdoc">Evaluates a feature for one examples on the specified data set.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:137</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_a9d798a9622d3032e2dbd7a6ec1954acf"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#a9d798a9622d3032e2dbd7a6ec1954acf">pcl::MultiChannel2DComparisonFeatureHandler::MultiChannel2DComparisonFeatureHandler</a></div><div class="ttdeci">MultiChannel2DComparisonFeatureHandler(const int feature_window_width, const int feature_window_height)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:65</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_ac1fd9fac486bfb9bfb8be106ab423d1b"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ac1fd9fac486bfb9bfb8be106ab423d1b">pcl::MultiChannel2DComparisonFeatureHandler::feature_window_width_</a></div><div class="ttdeci">int feature_window_width_</div><div class="ttdoc">The width of the feature window.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:178</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_adb35b339a775ceac5d1e47ab309d4dd4"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#adb35b339a775ceac5d1e47ab309d4dd4">pcl::MultiChannel2DComparisonFeatureHandler::createRandomFeatures</a></div><div class="ttdeci">void createRandomFeatures(const size_t num_of_features, std::vector&lt; MultiChannel2DComparisonFeature&lt; PointXY32i &gt; &gt; &amp;features)</div><div class="ttdoc">Creates random features.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:91</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_ae33e81f567c54e16637f71838a96faf8"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ae33e81f567c54e16637f71838a96faf8">pcl::MultiChannel2DComparisonFeatureHandler::feature_window_height_</a></div><div class="ttdeci">int feature_window_height_</div><div class="ttdoc">The height of the feature window.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:180</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_handler_html_ae5222ac47e3212e94df2153d8a763803"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature_handler.html#ae5222ac47e3212e94df2153d8a763803">pcl::MultiChannel2DComparisonFeatureHandler::generateCodeForEvaluation</a></div><div class="ttdeci">void generateCodeForEvaluation(const MultiChannel2DComparisonFeature&lt; PointXY32i &gt; &amp;feature, std::ostream &amp;stream) const</div><div class="ttdoc">Generates code for feature evaluation.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:167</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_html"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature.html">pcl::MultiChannel2DComparisonFeature</a></div><div class="ttdoc">Feature for comparing two sample points in 2D multi-channel data.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature.h:52</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_html_a00233aaf19077ef1856ada02938d0dc5"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a00233aaf19077ef1856ada02938d0dc5">pcl::MultiChannel2DComparisonFeature::channel</a></div><div class="ttdeci">unsigned char channel</div><div class="ttdoc">Specifies which channel is used for comparison.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature.h:88</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_html_a36c7c3b56cc8e76d8c7419991ac0429f"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature.html#a36c7c3b56cc8e76d8c7419991ac0429f">pcl::MultiChannel2DComparisonFeature::p2</a></div><div class="ttdeci">PointT p2</div><div class="ttdoc">Second sample point.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature.h:85</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_comparison_feature_html_acc68504329e15094bd0d99313a5c570b"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_comparison_feature.html#acc68504329e15094bd0d99313a5c570b">pcl::MultiChannel2DComparisonFeature::p1</a></div><div class="ttdeci">PointT p1</div><div class="ttdoc">First sample point.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature.h:83</div></div>
<div class="ttc" id="aclasspcl_1_1_multi_channel2_d_data_set_html"><div class="ttname"><a href="classpcl_1_1_multi_channel2_d_data_set.html">pcl::MultiChannel2DDataSet</a></div><div class="ttdoc">Holds a set of two-dimensional multi-channel data.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_data_set.h:139</div></div>
<div class="ttc" id="aclasspcl_1_1_point_x_y32f_html_a95da5d4b009d737fc3b07ecd05b5d6a8"><div class="ttname"><a href="classpcl_1_1_point_x_y32f.html#a95da5d4b009d737fc3b07ecd05b5d6a8">pcl::PointXY32f::randomPoint</a></div><div class="ttdeci">static PointXY32f randomPoint(const int min_x, const int max_x, const int min_y, const int max_y)</div><div class="ttdoc">Creates a random point within the specified window.</div></div>
<div class="ttc" id="aclasspcl_1_1_point_x_y32i_html_a9414cf0e2c0c17859ce1ac55091bfc99"><div class="ttname"><a href="classpcl_1_1_point_x_y32i.html#a9414cf0e2c0c17859ce1ac55091bfc99">pcl::PointXY32i::randomPoint</a></div><div class="ttdeci">static PointXY32i randomPoint(const int min_x, const int max_x, const int min_y, const int max_y)</div><div class="ttdoc">Creates a random point within the specified window.</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator_html"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_c_code_generator.html">pcl::ScaledMultiChannel2DComparisonFeatureHandlerCCodeGenerator</a></div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:332</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html">pcl::ScaledMultiChannel2DComparisonFeatureHandler</a></div><div class="ttdoc">Feature utility class that handles the creation and evaluation of RGBD comparison features.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:189</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_a04f5af75f4ff54e0d19a6140d39ac2b4"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a04f5af75f4ff54e0d19a6140d39ac2b4">pcl::ScaledMultiChannel2DComparisonFeatureHandler::createRandomFeatures</a></div><div class="ttdeci">void createRandomFeatures(const size_t num_of_features, std::vector&lt; MultiChannel2DComparisonFeature&lt; PointXY32f &gt; &gt; &amp;features)</div><div class="ttdoc">Creates random features.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:220</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_a0a5961d9d1a06de376b80dc07a53ca99"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a0a5961d9d1a06de376b80dc07a53ca99">pcl::ScaledMultiChannel2DComparisonFeatureHandler::evaluateFeature</a></div><div class="ttdeci">void evaluateFeature(const MultiChannel2DComparisonFeature&lt; PointXY32f &gt; &amp;feature, MultiChannel2DDataSet&lt; DATA_TYPE, NUM_OF_CHANNELS &gt; &amp;data_set, std::vector&lt; MultipleData2DExampleIndex &gt; &amp;examples, std::vector&lt; float &gt; &amp;results, std::vector&lt; unsigned char &gt; &amp;flags) const</div><div class="ttdoc">Evaluates a feature for a set of examples on the specified data set.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:241</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_a33e9e59b4dc62f8ae38e23da8cfe3f0c"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a33e9e59b4dc62f8ae38e23da8cfe3f0c">pcl::ScaledMultiChannel2DComparisonFeatureHandler::feature_window_height_</a></div><div class="ttdeci">int feature_window_height_</div><div class="ttdoc">The height of the feature window.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:324</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_a42876790466c7ed3f9c61f6a3897df18"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a42876790466c7ed3f9c61f6a3897df18">pcl::ScaledMultiChannel2DComparisonFeatureHandler::evaluateFeature</a></div><div class="ttdeci">void evaluateFeature(const MultiChannel2DComparisonFeature&lt; PointXY32f &gt; &amp;feature, MultiChannel2DDataSet&lt; DATA_TYPE, NUM_OF_CHANNELS &gt; &amp;data_set, const MultipleData2DExampleIndex &amp;example, float &amp;result, unsigned char &amp;flag) const</div><div class="ttdoc">Evaluates a feature for one examples on the specified data set.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:266</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_a476466bacddb020d16af9695eda038cd"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#a476466bacddb020d16af9695eda038cd">pcl::ScaledMultiChannel2DComparisonFeatureHandler::generateCodeForEvaluation</a></div><div class="ttdeci">void generateCodeForEvaluation(const MultiChannel2DComparisonFeature&lt; PointXY32f &gt; &amp;feature, std::ostream &amp;stream) const</div><div class="ttdoc">Generates code for feature evaluation.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:305</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_ac0e0f1c30888b5679d156c1807f3cb78"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ac0e0f1c30888b5679d156c1807f3cb78">pcl::ScaledMultiChannel2DComparisonFeatureHandler::feature_window_width_</a></div><div class="ttdeci">int feature_window_width_</div><div class="ttdoc">The width of the feature window.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:322</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_ac511a3614a576d5010e04565f985cb01"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ac511a3614a576d5010e04565f985cb01">pcl::ScaledMultiChannel2DComparisonFeatureHandler::~ScaledMultiChannel2DComparisonFeatureHandler</a></div><div class="ttdeci">virtual ~ScaledMultiChannel2DComparisonFeatureHandler()</div><div class="ttdoc">Destructor.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:200</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_ad3b067f32dfcecafd33f98578682f2ce"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ad3b067f32dfcecafd33f98578682f2ce">pcl::ScaledMultiChannel2DComparisonFeatureHandler::setFeatureWindowSize</a></div><div class="ttdeci">void setFeatureWindowSize(int width, int height)</div><div class="ttdoc">Sets the feature window size.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:207</div></div>
<div class="ttc" id="aclasspcl_1_1_scaled_multi_channel2_d_comparison_feature_handler_html_ad880c3b3512f7657433363b3859812fd"><div class="ttname"><a href="classpcl_1_1_scaled_multi_channel2_d_comparison_feature_handler.html#ad880c3b3512f7657433363b3859812fd">pcl::ScaledMultiChannel2DComparisonFeatureHandler::ScaledMultiChannel2DComparisonFeatureHandler</a></div><div class="ttdeci">ScaledMultiChannel2DComparisonFeatureHandler(const int feature_window_width, const int feature_window_height)</div><div class="ttdoc">Constructor.</div><div class="ttdef"><b>Definition:</b> multi_channel_2d_comparison_feature_handler.h:194</div></div>
<div class="ttc" id="acommon_2include_2pcl_2common_2common_8h_html"><div class="ttname"><a href="common_2include_2pcl_2common_2common_8h.html">common.h</a></div></div>
<div class="ttc" id="astructpcl_1_1_multiple_data2_d_example_index_html"><div class="ttname"><a href="structpcl_1_1_multiple_data2_d_example_index.html">pcl::MultipleData2DExampleIndex</a></div><div class="ttdoc">Example index for a set of 2D data blocks.</div><div class="ttdef"><b>Definition:</b> multiple_data_2d_example_index.h:51</div></div>
<div class="ttc" id="astructpcl_1_1_multiple_data2_d_example_index_html_a3db3df39303e0a41c6a7be43f514e088"><div class="ttname"><a href="structpcl_1_1_multiple_data2_d_example_index.html#a3db3df39303e0a41c6a7be43f514e088">pcl::MultipleData2DExampleIndex::y</a></div><div class="ttdeci">int y</div><div class="ttdoc">The y-coordinate.</div><div class="ttdef"><b>Definition:</b> multiple_data_2d_example_index.h:58</div></div>
<div class="ttc" id="astructpcl_1_1_multiple_data2_d_example_index_html_a8be184b8a7efe97df3463be820320379"><div class="ttname"><a href="structpcl_1_1_multiple_data2_d_example_index.html#a8be184b8a7efe97df3463be820320379">pcl::MultipleData2DExampleIndex::x</a></div><div class="ttdeci">int x</div><div class="ttdoc">The x-coordinate.</div><div class="ttdef"><b>Definition:</b> multiple_data_2d_example_index.h:56</div></div>
<div class="ttc" id="astructpcl_1_1_multiple_data2_d_example_index_html_aa13bfd4415240eb5cffc3a0c83cd6f56"><div class="ttname"><a href="structpcl_1_1_multiple_data2_d_example_index.html#aa13bfd4415240eb5cffc3a0c83cd6f56">pcl::MultipleData2DExampleIndex::data_set_id</a></div><div class="ttdeci">int data_set_id</div><div class="ttdoc">The data set index.</div><div class="ttdef"><b>Definition:</b> multiple_data_2d_example_index.h:53</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_1c3a59615ddebb5fbf04127ce013cb9e.html">ml</a></li><li class="navelem"><a class="el" href="dir_ed91c8b737589176c9ce37ccaf5e3c04.html">include</a></li><li class="navelem"><a class="el" href="dir_9595a79def9333077e3050fe0c34cbf8.html">pcl</a></li><li class="navelem"><a class="el" href="dir_379cf371dc5d9a176ab38f931fad5e01.html">ml</a></li><li class="navelem"><b>multi_channel_2d_comparison_feature_handler.h</b></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
